/* Kernel includes. */
#include "GpioPort.h"
#include "FreeRTOS.h"
#include "Adc.h"
#include "Dma.h"
#include "CAN.h"
/* Application includes. */
#include "Clock.h"
#include "Fpu.h"
#include "Ftu.h"
#include "Ioport.h"
#include "GpioPort.h"
#include "IoHwAb_Dio.h"

// #include "TLE94112.h"
uint32_t SystemCoreClock;
extern void FreeRTOS_Start(void);
/*-----------------------------------------------------------*/


/**
 * *********************************************************************************************************************
 * Name         : 
 * Description  : 
 * Algorithm    : Void
 * Input        : Void
 * Output       : Void
 * Return       : Void
 * *********************************************************************************************************************
 */
int i = 0;
int main(void)
{
    /* Configure the clock and peripherals. */
    Bsp_CLOCK_Init();
    FCPortGpioInit();
    FCAdcGpioInit();
    FCGpioOutputInit();
    FCGpioInputInit();
    FCCanPortInit();
    GPIO_pullup();
//    IoIf_set_IOESCLPOWOUTCtrl(0);
//    IoIf_set_IOFrontWasherCtrl(0);
//    IoIf_set_IOReverseLightATCtrl(0);
//    IoIf_set_Brake_CHMSLLight_CTRL(0);
//    IoIf_set_Turn_Left_Lamp_light_CTRl(0);
//    IoIf_set_Turn_Right_Lamp_light_CTRl(0);
//    IoIf_set_IOReservedHSDlCtrl(0);
//    IoIf_set_IOBatterySaver(0);
//    IoIf_set_IOBackLightCtrl(1);

//    IoIf_set_IOIGN2RelayCtrl(1);
//    IoIf_set_IOIGNlRelayCtrl(1);
//    IoIf_set_IOACCRelayCtrl(1);
//    IoIf_set_IOCrankRelayCtrl(1);

//    IoIf_set_Brake_CHMSLLight_CTRL(1);
//    IoIf_set_IOBackLightCtrl(1);
//    IoIf_set_Turn_Left_Lamp_light_CTRl(1);
//    IoIf_set_Turn_Right_Lamp_light_CTRl(1);
//    IoIf_set_IOBatterySaver(1);
//    IoIf_set_IOReservedHSDlCtrl(1);
//    IoIf_set_IOESCLPOWOUTCtrl(1);
//    IoIf_set_IOFrontWasherCtrl(1);
//    IoIf_set_IOReverseLightATCtrl(1);


    IoIf_set_IODOHSDDIAGEN(1);
//    IoIf_set_IOInteriorLightCTRL(0);
//    IoIf_set_IOInteriorLightDIAGEN(1);
    Dio_WriteChannel( CAN2_STB ,0 );
    Dio_WriteChannel( CAN1_STB ,0 );
    Com_Init();
    BSP_CAN_Init();
    Interrupt_Init();
//    FCFtuGpioInit();
    SCG_GetScgClockFreq(SCG_CORE_CLK, &SystemCoreClock);

//    PORT_InitType tgpioInitStruct = {0};
//    tgpioInitStruct.u32PortPins = PORT_PIN_22;
//    tgpioInitStruct.uPortPinMux.u32PortPinMode = PORT_GPIO_MODE;
//    tgpioInitStruct.ePortGpioDir = PORT_GPIO_OUT;
//    tgpioInitStruct.ePortGpioLevel = PORT_GPIO_LOW;
//    PORT_InitPins(PORT_A, &tgpioInitStruct);
////    GPIO_WritePins(PORT_A,PORT_PIN_22);
//    IoIf_set_IODOHSDDIAGEN(1);


//	Dio_WriteChannel( CAN2_STB ,             1                );
//	Dio_WriteChannel( CAN1_STB ,             0                );
//	Dio_WriteChannel( IO_Reserved_LSD_1_Ctr ,       0         );//NC

//	Dio_WriteChannel( IO_Reserved_LSD_2_CtrI_DIAG_EN ,       );//NC
//	Dio_WriteChannel( IO_Reserved_LSD_2_Ctr ,                );//NC
//	Dio_WriteChannel( IO_DO_HSD_2CH_DSEL ,                   );//ADC
//	Dio_WriteChannel( IO_DO_HSD_DIAG_EN ,                    );//ADC
//	Dio_WriteChannel( IO_94112_EN ,            1              );
//	Dio_WriteChannel( IO_Back_Light_Ctrl ,                   );//ADC
//	Dio_WriteChannel( IO_LIN4_SLP_N ,            1            );
//	Dio_WriteChannel( IO_Central_Lock_Ctrl ,       1          );
//	Dio_WriteChannel( IO_Central_Unlock_Ctrl ,       1        );
//	Dio_WriteChannel( IO_Front_Wiper_High_Ctrl ,       1      );
//	Dio_WriteChannel( IO_ESCL_POW_OUT_Ctrl ,                 );//ADC
//	Dio_WriteChannel( IO_Front_Washer_Ctrl ,                 );//ADC
//	Dio_WriteChannel( IO_Reverse_LightAT_Ctrl ,              );//ADC
//	Dio_WriteChannel( IO_LIN2_SLP_N ,             1           );
//	Dio_WriteChannel( IO_Interior_Light_DlAG_EN ,     1       );//NC
//	Dio_WriteChannel( IO_Front_Wiper_Low_Ctrl ,      1        );
//	Dio_WriteChannel( IO_ESCL_Lock_UnLock ,         1          );
//	Dio_WriteChannel( IO_ESCL_Power_Supply ,       1          )	;
//	Dio_WriteChannel( IO_Reserved_HSD_5 ,                    );//NC
//	Dio_WriteChannel( IO_Reserved_HSD_4 ,                    );//NC
//	Dio_WriteChannel( IO_Crank_Relay_Ctrl ,                  );//ADC
//	Dio_WriteChannel( IO_ACC_Relay_Ctrl ,                    );//ADC
//	Dio_WriteChannel( IO_IGN1_ING2_ACC_SRG_DSEL1 ,      0     );//ADC
//	Dio_WriteChannel( IO_IGN2_Relay_Ctrl ,                   );//ADC
//	Dio_WriteChannel( IO_IGNI_ING2_ACC_SRG_DSEL0 ,     0      );//ADC
//	Dio_WriteChannel( IO_RUNNING_LED ,           0            );
//	Dio_WriteChannel( IO_IGN1_Relay_Ctrl_Lock ,      1        );
//	Dio_WriteChannel( IO_Limphome_Trigger ,        1          );
//	Dio_WriteChannel( IO_IGN1_Relay_Ctrl ,        1           );
//	Dio_WriteChannel( IO_Wiper_gear_2 ,         1             );
//	Dio_WriteChannel( IO_Wiper_gear_1 ,         1             );
//	Dio_WriteChannel( IO_Interior_Light_CTRL ,               );//NC
//	Dio_WriteChannel( IO_LIN3_SLP_N ,           1             );
//	Dio_WriteChannel( IO_Elec_ATWS_Status_Indicator_Ctrl ,  1 );
//	Dio_WriteChannel( IO_Engine_ATWS_Status_Indicator_Ctrl , 1);
//	Dio_WriteChannel( IO_IGN_POW_OUT_Ctrl ,        1          );
//	Dio_WriteChannel( IO_Mirror_Fold_Ctrl ,        1          );
//	Dio_WriteChannel( IO_Mirror_Unfold_Ctrl ,       1         );
//	Dio_WriteChannel( IO_POWER_2910_COR ,          1          );
//	Dio_WriteChannel( IO_2910_RSTN ,           1              );
//	Dio_WriteChannel( IO_LF_RST ,             1               );
//	Dio_WriteChannel( IO_Battery_Saver ,                     );//ADC
//	Dio_WriteChannel( IO_Reserved_HSD_l_Ctrl ,               );//ADC
//	Dio_WriteChannel( IO_Reserved_HSD_3_Ctrl ,               );//NC
//	Dio_WriteChannel( IO_Reserved_HSD_2_Ctrl ,               );//NC
//	Dio_WriteChannel( IO_LIN1_SLP_N ,           1             );
//	Dio_WriteChannel( IO_5V_PU_EN ,           1               );
//	Dio_WriteChannel( IO_450M5_EN ,          1                );
//	Dio_WriteChannel( IO_WD_EN ,                             );//WDG
//	Dio_WriteChannel( IO_Reserved_LSD_1_CtrI_DIAG_EN ,       );//ADC
//	Dio_WriteChannel( IO_FEED_WD ,                           );//WDG
//	Dio_WriteChannel( IO_Turn_Right_Lamp_light_CTRl ,        );//ADC
//	Dio_WriteChannel( IO_Turn_Left_Lamp_light_CTRl ,         );//ADC
//	Dio_WriteChannel( IO_Brake_CHMSLLight_CTRL ,             );//ADC
//	Dio_WriteChannel( IO_Low_Beam_Light_Ctrl ,       1        );
//	Dio_WriteChannel( IO_PositionLicense_Plate_DRL_Ctrl ,   1 );

//	i = Dio_ReadChannel(IO_LIN4_INH  )  					;
//	i = Dio_ReadChannel(IO_LF_BUSY_INT  )  					;
//	i = Dio_ReadChannel(IO_Front_Washer_Switch  )  			;
//	i = Dio_ReadChannel(IO_Eco_Mode_Switch  )				;
//	i = Dio_ReadChannel(IO_Interior_Light_DlAG  )			;
//	i = Dio_ReadChannel(IO_ESCL_Power_Supply_DIAG  )		;
//	i = Dio_ReadChannel(IO_LIN2_INH  )						;
//	i = Dio_ReadChannel(IO_Front_Wiper_Park_Switch  )		;
//	i = Dio_ReadChannel(IO_Front_radar_Switch  )			;
//	i = Dio_ReadChannel(IO_Sport_Mode_Switch  )				;
//	i = Dio_ReadChannel(IO_Shift_P_Signal_Switch_AT__Reserved  )			;
//	i = Dio_ReadChannel(IO_Snow_Mode_Switch  )				;
//	i = Dio_ReadChannel(IO_Vehicle_speed_lock_Switch  )		;
//	i = Dio_ReadChannel(IO_Rear_Fog_Light_switch  )			;
//	i = Dio_ReadChannel(IO_Front_Fog_Light_switch  )		;
//	i = Dio_ReadChannel(IO_LIN3_INH  )						;
//	i = Dio_ReadChannel(IO_73112_nFAULT  )					;
//	i = Dio_ReadChannel(IO_RF_REDN  )						;
//	i = Dio_ReadChannel(IO_LIN1_INH  )						;
//	i = Dio_ReadChannel(IO_9555_INT  )						;
//	i = Dio_ReadChannel(IO_Reverse_Gear_Switch_MT  )		;
//	i = Dio_ReadChannel(IO_ESCL_Status_Feedback  )			;
//	i = Dio_ReadChannel(IO_LF_IRQ_INT_WPS  )				;
//	i = Dio_ReadChannel(IO_RF_INT_N_WPS  )					;
//	i = Dio_ReadChannel(IO_ACC_Switch_WPS  )				;
//	i = Dio_ReadChannel(IO_Brake_Switch_Switch_WPS  )		;
//	i = Dio_ReadChannel(IO_IGNl_Switch_WPs  )				;
//	i = Dio_ReadChannel(IO_Switch_WAKEUP_EN_WPS  )			;
//	i = Dio_ReadChannel(IO_KeyInsertion_Switch_Reserved_WPS  )				;
//	i = Dio_ReadChannel(IO_Hazard_Switch_NonSelfLock_WPS  )					;
//	i = Dio_ReadChannel(IO_Hazard_Switch_SelfLock_WPS  )					;

    Bsp_DMA_Init();
    Bsp_ADC_Init();
    Bsp_DMA_Start();
    Bsp_ADC_Start();

//    Bsp_Ftu_Init();
//	Bsp_PWM_Ftu_Start();

    FreeRTOS_Start();

    return 0;
}




/* END main */


